Enabling and disabling location sharing based on environmental signals

ABSTRACT

Environmental signals are used to determine when to prompt a user to enable location sharing on their computer devices. These environmental signals may include the current location of the user being an unusual location for the user or a location that is tagged as a known social location such as a concert venue, stadium, or park. The environmental signals may also include one or more friends of the user being near the user. If the user chooses to enable location sharing in response to the prompt, the location of the user may be shared with some or all of their friends, or just the friends that have been determined to be near the user. After some amount of time has passed, or the environmental signals have changed, the location sharing may be automatically disabled for the user.

BACKGROUND

Modern computing devices such as smartphones and tablet computers allowusers to share their locations with other users. A user who has enabledlocation sharing can view the current locations of their friends on amap, and vice versa. Some applications such as social networkingapplications can make use of location sharing by notifying users whenthey are near one or more of their friends or contacts.

As may be appreciated, enabling location sharing can facilitatein-person social interaction. For example, a user may be at a concertand not realize that one of their friends is at the same concert.However, if the user and their friend have enabled location sharing, oneor more applications on their respective computing devices may alert theuser that the friend is nearby, and the user may enjoy the concert withtheir friend.

While such location sharing is useful for a variety of applications,many users do not enable location sharing on their mobile devices. Onereason may be that many users spend much of their time performingroutine activities such as working, shopping for food, and watchingtelevision and either do not want others to know their locations whilethey perform these activities, or are not interested in otherscontacting them while they perform these activities. As a result, usersmay miss out on the benefits of location sharing during their leisuretime.

SUMMARY

Environmental signals are used to determine when to prompt a user toenable location sharing on their computer devices. These environmentalsignals may include the current location of the user being an unusuallocation for the user or a location that is tagged as a known sociallocation such as a concert venue, stadium, or park. The environmentalsignals may also include one or more friends of the user being near theuser. If the user chooses to enable location sharing in response to theprompt, the location of the user may be shared with some or all of theirfriends, or just the friends that have been determined to be near theuser. After some amount of time has passed, or the environmental signalshave changed, the location sharing may be automatically disabled for theuser.

In an implementation, a system recommending that location sharing beenabled for a user in response to determining that one or more triggerconditions are satisfied, and for disabling location sharing in responseto determining that the one or more trigger conditions are no longersatisfied is provided. The system includes at least one computing deviceand a sharing engine. The sharing engine: determines a current locationof a device associated with a user; determines a plurality ofenvironmental signals; retrieves one or more trigger conditions; basedon the determined current location of the device associated with theuser and the determined plurality of environmental signals, determinesthat the one or more trigger conditions are satisfied; in response tothe determination that the one or more trigger conditions are satisfied,provides a recommendation to enable location sharing on the deviceassociated with the user; determines that the user has enabled locationsharing on the device associated with the user; determines that the oneor more trigger conditions are no longer satisfied; and in response tothe determination that the one or more trigger conditions are no longersatisfied, disables location sharing on the device associated with theuser.

In an implementation, a system for enabling location sharing for a userin response to determining that one or more trigger conditions aresatisfied, and for disabling location sharing in response to determiningthat the one or more trigger conditions are no longer satisfied isprovided. The system may include at least one computing device and asharing engine. The sharing engine: determines a current location of adevice associated with a user; determines one more other users that arewithin a threshold distance of the current location; based on thedetermined current location of the device associated with the user andthe determined one or more other users, determines that one or moretrigger conditions are satisfied; and in response to the determinationthat the one or more trigger conditions are satisfied, enables locationsharing on the device associated with the user.

In an implementation, a method for enabling location sharing for a userin response to determining that one or more trigger conditions aresatisfied, and for disabling location sharing in response to determiningthat the one or more trigger conditions are no longer satisfied isprovided. The method includes: determining a plurality of environmentalsignals associated with a user by a computing device; based on thedetermined plurality of environmental signals, determining that one ormore trigger conditions are satisfied by the computing device; inresponse to the determination that the one or more trigger conditionsare satisfied, providing a recommendation for the user to enablelocation sharing by the computing device; determining that the user hasenabled location sharing by the computing device; determining that theone or more trigger conditions are no longer satisfied by the computingdevice; and in response to the determination that the one or moretrigger conditions are no longer satisfied, disabling location sharingby the computing device.

This summary is provided to introduce a selection of concepts in asimplified form that are further described below in the detaileddescription. This summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing summary, as well as the following detailed description ofillustrative embodiments, is better understood when read in conjunctionwith the appended drawings. For the purpose of illustrating theembodiments, there is shown in the drawings example constructions of theembodiments; however, the embodiments are not limited to the specificmethods and instrumentalities disclosed. In the drawings:

FIG. 1 is an illustration of an exemplary environment for recommendingthat a user enable location sharing based on environmental signals;

FIG. 2 is an illustration of an implementation of an exemplary sharingengine;

FIGS. 3-5 are illustrations of an example user interface forrecommending that a user enable location sharing;

FIG. 6 is an operational flow of an implementation of a method forenabling and disabling location sharing on a client device based onenvironmental signals;

FIG. 7 is an operational flow of an implementation of a method forenabling and disabling location sharing on a client device based onproximate users; and

FIG. 8 shows an exemplary computing environment in which exampleembodiments and aspects may be implemented.

DETAILED DESCRIPTION

FIG. 1 is an illustration of an exemplary environment for recommendingthat a user enable location sharing based on environmental signals. Theenvironment 100 may include a sharing engine 165, one or more socialnetworking providers 170, and one or more client devices 110 incommunication through a network 122. The network 122 may be a variety ofnetwork types including the public switched telephone network (PSTN), acellular telephone network, and a packet switched network (e.g., theInternet). Although only one client device 110, one social networkingprovider 170, and one sharing engine 165 are shown in FIG. 1, there isno limit to the number of client devices 110, social networkingproviders 170, and sharing engines 165 that may be supported.

The client device 110 and the sharing engine 165 may be implementedusing a variety of computing devices such as smartphones, desktopcomputers, laptop computers, tablets, set top boxes, vehicle navigationsystems, and video game consoles. Other types of computing devices maybe supported. A suitable computing device is illustrated in FIG. 8 asthe computing device 800.

Each client device 110 may execute an operating system 111 and one ormore applications 112. The operating system 111 may control whichapplications 112 are executed by the client device 110, as well ascontrol how the applications 112 interact with one or more sensors,services, or other resources of the client device 110. For example, theoperating system 111 may control how each application 112 is able toaccess memory of the client device 110, network resources of the clientdevice 110, and the camera of the client device 110.

Many client devices 110 include a location determination component thatmay be used to determine a location 117 of the client device 110.Examples of location determination components include a GPS receiver, ora WiFi based location determination component. Other methods ortechniques for determining a location 117 of a client device 110 may beused.

The operating system 111 and/or the application 112 may use the location117 of the client device 110 to provide what is referred to as locationsharing. The operating system 111 may allow one or more applications 112to access the location 117 of the client device 110 and to share thelocation 117 of the client device 110 with other users of theapplication 112. Depending on the implementation, the operating system111 of the client device 110 may also share the location 117 of theclient device 110 with the operating systems 111 of other client devices110.

For example, the client device 110 may execute an application 112 suchas a social networking application 112. The social networkingapplication 112 may use the location sharing of the operating system 111to determine the location 117 of the client device 110, and may sharethe location 117 with other users of the social networking application112. In another example, an application 112 associated with a chain offast food restaurants can use the location 117 of the user to determinewhen the user is near one of the restaurants. The application 112 canthen alert the user or provide the user with a coupon to encourage theuser to eat at the restaurant.

Typically, users are asked by the operating system 111 to enablelocation sharing on their client devices 110. The location sharing maybe enabled (or disabled) by a user for all applications 112, or on anapplication 112 by application 112 basis. For example, when a userinstalls a new application 112, the operating system 111 may ask theuser if they would like to enable location sharing on the application112. If the user enables location sharing, then the application 112 maybe permitted to access and share the current location 117 of the clientdevice 110, else the application 112 may be blocked from accessing andsharing the location 117.

As described above, enabling location sharing can facilitate a widevariety of social interactions. For example, a user visiting a foreigncity who has location sharing enabled may learn from an associatedsocial networking application 112 that one of their contacts is alsovisiting the same city. The user can then reach out to the contact tomeet up in the foreign city. Without location sharing, it is unlikelythat the users would have crossed paths in the foreign city.

However, despite the benefits, many users initially disable locationsharing on their client devices 110. This may be due to privacyconcerns, or that most of a user's time is spent working or performingother activities that they do not want interrupted. While users canmanually enable location sharing, most users do not make any changes totheir location sharing preferences once they have been initiallyselected.

Accordingly, to facilitate the enabling and disabling of locationsharing on the client device 110, the environment 100 may furtherinclude the sharing engine 165. The sharing engine 165 may determinewhen to send a recommendation 169 to the client device 110 to enablelocation sharing. The client device 110 may display a prompt or userinterface element through which the user can choose whether to enablelocation sharing. If the user chooses to enable location sharing, thesharing engine 165 may at some later time automatically disable thelocation sharing for the user.

The sharing engine 165 may determine when to send a recommendation 169to enable location sharing using one or more trigger conditions 145associated with the user or the client device 110 associated with theuser. The trigger conditions 145 may be a set of rules that whensatisfied, indicate that enabling location sharing for the user mayresult in an improved user experience.

Depending on the implementation, the trigger conditions 145 may be basedon the location 117 of the user and one or more environmental signals191 collected by the client device 110 or received from one or moresocial networking providers 170. One example of an environmental signal191 is identifiers of users that are within some threshold distance ofthe client device 110. The users may be users that the user associatedwith the client device 110 has a social networking relationship with ina social networking application 112. For example, the users may be“friends” of the user that are within one mile of the location 117 ofthe client device 110. The threshold distance may be set by a user or anadministrator.

Other examples of environmental signals 191 may include the date, time,or temperature associated with the client device 110, whether or not theuser is using an application 112 associated with the client device 110,a current speed of the client device 110, and how long the user has beenat the current location 117. Other information may be included in theenvironmental signals 191.

Each trigger condition 145 may be based on the environmental signals191. For example, one trigger condition 145 may be based on the numberof friends of the user that are within the threshold distance of theuser. Another trigger condition 145 may be based on whether the user hasbeen at the location 117 for more than a threshold amount of time. Ifthe user is near many of their friends or has been inactive for a longtime, then it may be beneficial for the user to enable location sharing.

Other types of data used to create and satisfy trigger conditions 145may include user data 167 and location data 166. The user data 167 mayinclude data that has been collected about the user such as anyappointments or upcoming meetings that the user may have, as well as thelocations 117 that are frequented by the user. If the user data 167indicates that the user is at a meeting, then it may not be a good timeto enable location sharing. A location 117 that is frequented by a userbecause the user works or lives at the location 117 may similarlyindicate that location sharing should not be enabled.

The location data 166 may include information about various locations117. The location data 166 for a location 117 may indicate what type ofbusiness the location 117 is associated with if any, how popular thelocation 117 is, and what times users tend to visit the location 117. Asmay be appreciated, if a location 117 is associated with a business suchas a nightclub or a concert venue, then it may be beneficial for theuser to enable location sharing. Conversely, if the location 117 isassociated with a business such as a dry cleaner, then the user may notbenefit from location sharing. Locations 117 where it may be beneficialto enable location sharing may be identified as tagged locations in thelocation data 166.

After one, some, or all of the trigger conditions 145 have beensatisfied, the sharing engine 165 may generate the recommendation 169,and may provide the recommendation 169 to the client device 110. Theclient device 110 may then display a prompt or other user interfaceelement that asks the user if they would like to temporarily enablelocation sharing. If the user accepts the recommendation 169, then thelocation sharing may be enabled on the client device 110.

The sharing engine 165 may further determine when to disable thelocation sharing on the client device 110. In some implementations, thesharing engine 165 may determine, based on some or all of theenvironmental signals 191, location 117, user data 167, and locationdata 166, that the trigger conditions 145 are no longer met. Forexample, the user may have changed locations 117, or the friends of theuser may no longer be within the threshold distance.

When the sharing engine 165 determines to disable the location sharing,the sharing engine 165 may disable the location sharing on the clientdevice 110 automatically and without any action being taken by the user.Alternatively, the sharing engine 165 may generate a recommendation 169that the user disable the location sharing.

As may be appreciated, the sharing engine 165 provides many advantages.For example, by using environmental signals 191 and other informationabout a user and the location 117 of the user, the sharing engine 165can determine when a user is likely to benefit from or enjoy locationsharing even where the user has previously disabled location sharing.Because the user may not have ever utilized location sharing in thepast, the user may not recognize situations where location sharing wouldbe enjoyable or beneficial.

Additionally, because the recommendation 169 to enable location sharingis displayed to the user and the user is able to enable location sharingusing the displayed recommendation 169, the user is more likely toenable location sharing. Previously, even if a user wanted to enablelocation sharing, the options to enable location sharing were buried inthe settings or preferences of their applications 112 and/or operatingsystems 111 making enabling the location sharing difficult andcumbersome. By displaying the recommendation 169 directly to the user,the user does not have to remember how to enable location sharing ontheir client device 110.

Moreover, by automatically disabling the location sharing for the useronce the trigger conditions 145 are no longer satisfied, the user doesnot have to remember to disable location sharing. Previously, users mayhave been reluctant to temporarily enable location sharing on theirdevices when they are participating in a social event such as attendinga concert because they feared forgetting to disable it when the concertwas over. This would result in a user inadvertently sharing theirlocation when they preferred their location to remain private. Becausethe user knows that the location sharing will be automatically disabledlater, they are more likely to agree to enable the location sharing inresponse to a recommendation 169.

FIG. 2 is an illustration of an implementation of an exemplary sharingengine 165. The sharing engine 165 may include one or more componentsincluding a signal engine 205 and a trigger engine 210. More or fewercomponents may be included in the sharing engine 165. Some or all of thecomponents of the sharing engine 165 may be implemented by one or morecomputing devices such as the computing device 800 described withrespect to FIG. 8. Some or all of the functionality attributed to thesharing engine 165 may be performed by one or more of the socialnetworking provider 170 or the client device 110. In addition, some orall of the functionality provided by any of the sharing engine 165, thesignal engine 205, and the trigger engine 210 may be performed entirelyor in part by a cloud based computing device.

The signal engine 205 may collect environmental signals 191 and otherdata that may be used by the sharing engine 165 to determine whether ornot to enable (or disable) location sharing on the client device 110associated with a user. As shown, the environmental signals 191 mayinclude proximate users 221, beacon signals 223, and emergency signals225.

The proximate users 221 may be indicators of the users that are within athreshold distance of the location 117. The users may be users that havea social networking relationship with the user associated with theclient device 110 in one or more social networking applications 112.Depending on the implementation, the signal engine 205 may provide thelocation 117 associated with the user to the social networking provider170, and the social networking provider 170 may provide indicators ofthe proximate users 221 (if any) to the signal engine 205.

In other implementations, the proximate users 221 may be determined bythe signal engine 205 using one or more sensors associated with clientdevice 110. For example, the signal engine 205 may use WiFi, Bluetooth,RFID, NFC, or some other wireless technology that may be used to detectthe presence of client devices 110 associated with the proximate users221.

The beacon signals 223 may be signals that are generated by a beacon ortransmitter that is placed to encourage users to enable locationsharing. Depending on the implementation, a beacon may be associatedwith an account in a social networking application 112. For example, alocation such as a national park may place a beacon that transmits asignal to encourage visitors to the park to enable location sharing withthe social networking account of the park while the visitors arevisiting the park. If the visitors become lost or missing in the park,rangers associated with the park can use the location sharing to locatethe lost or missing visitors.

The emergency signals 225 may be signals generated by a governmentagency in the event of an emergency to encourage users to enablelocation sharing during the emergency. Depending on the implementation,the emergency signals 225 may be generated by a transponder such as aWiFi router or cellular phone tower, and may be similarly associatedwith an account in a social networking application 112.

For example, when an emergency such as a fire or a shooting breaks outin an area, the police may send out an emergency signal 225 thatencourages users in the area to enable location sharing on their clientdevices 110. The police, as well as friends and relatives, may then beable to locate the users during the emergency using the locationsharing.

The signal engine 205 may further collect user data 167. The user data167 may include data that is specific to or associated with each user.One example of user data 167 may be calendar data. The calendar data maybe used to determine the locations 117 of the other users, what usersare proximate users 221, and how long each user is likely to remain at alocation 117. For example, a calendar entry associated with the user mayindicate that the user will be having lunch in the park with John andFred from 12 pm to 1:30 pm. The signal engine 205 may determine that theusers John and Fred will be proximate users 221 to the user associatedwith the calendar from 12 pm to 1:30 pm at the location 117 of the park.

Another example of user data 167 is the location history of the user.The location history of the user may include locations 117 that the userhas visited in the past along with dates and/or times that the uservisited the locations 117. The location history of the user may be usedto determine if a current location 117 of the user is a typical location117 that is frequently visited by the user (e.g., their house, theirwork, etc.), or if the current location 117 is an unusual or speciallocation 117 for the user (e.g., a new city or a foreign city, aneighborhood that the user rarely goes to, etc.)

The signal engine 205 may collect location data 166. The location data166 may include information about a variety of locations 117. Thelocation data 166 may indicate whether the location 117 is a residentiallocation or a business location. The location data 166 may indicatewhether the location 117 is associated with special events or occasions(e.g., concert venue, auditorium, vacations, etc.), or whether thelocation 117 is associated with more mundane or routine activities(e.g., supermarket, office building, dry cleaner, etc.). The locationdata 166 may be provided by the locations 117 themselves, or may beprovided by a data aggregating service, for example. When a location 117is associated with special events or occasions, it may be identified inthe location data 166 as a tagged location 117.

Other examples of data that may be collected by the signal engine 205include the date, the current temperature, and general event data. Theevent data may include information about any events such as concerts,movies, festivals, etc., that may be happening at or around the currentlocation 117 of the user.

As may be appreciated, the various data collected by the signal engine205 including the environmental signals 191, user data 167, and locationdata 166 may be personal and private. Accordingly, to protect theprivacy of each user, any data collected by the signal engine 205 may beencrypted. Moreover, before any data is collected and used by the signalengine 205, each user may be asked to opt-in or otherwise consent to thecollection and use of such data.

The trigger engine 210 may retrieve one or more trigger conditions 145for a user of a client device 110. Each trigger condition 145 may be arule, or set of rules, that takes as an input data collected by thesignal engine 205, and based on the input data, indicates whether theclient device 110 should enable location sharing. Depending on theimplementation, each trigger condition 145 may be provided by the useror an administrator.

One example of a trigger condition 145 is that the user is located at alocation 117 that is unusual for the user, or that is associated withspecial occasions or events (i.e., a tagged location 117). For example,if the user data 167 associated with the user indicates that the currentlocation 117 of the user is not a location that the user typicallyvisits, then the user may be open to enabling location sharing. Inanother example, the location data 166 may indicate that the user is atlocation 117 that is a tagged location 117 such as a concert venue or atheater, and may similarly be open to enabling location sharing.

Another example of a trigger condition 145 is that there are more than athreshold number of proximate users 221 detected by the sharing engine165. The threshold may be set by a user or an administrator.

Other examples of trigger conditions 145 may include receiving beaconsignals 223, receiving emergency signals 225, the current date being aweekend, and a calendar associated with the user indicating that theyare on vacation or will be traveling to an unusual location 117. Othertypes of trigger conditions 145 may be supported.

The trigger engine 210 may generate a recommendation 169 in response toone or more of the trigger conditions 145 being met. Depending on theimplementation, the recommendation 169 may be generated in response tocertain combinations of trigger conditions 145 being met.

For example, a recommendation 169 may be generated in response to thetrigger condition 145 of more than a threshold number of proximate users221, and the trigger condition 145 of the current location 117 being atagged location 117. As may be appreciated, when the user is at alocation 117 such as their office, they may have multiple proximateusers 221 (e.g., co-workers), but still may be unlikely to enablelocation sharing. Any combination of trigger conditions 145 may be used.

The trigger engine 210 may provide the recommendation 169 to the user attheir client device 110. The client device 110 may generate a prompt ora user interface element asking the user to enable location sharing. Theuser may enable location sharing directly using the user interfaceelement, and without having to use any menus or settings associated withthe operating system 111 or application 112 associated with the clientdevice 110.

In some implementations, the recommendation 169 may indicate reasons whythe recommendation 169 was generated, and the indicated reasons may bedisplayed to the user in the user interface element. For example, if therecommendation 169 was generated because of trigger conditions 145 suchas multiple proximate users 221, and the user having a location 117 thatis a sporting venue, the user interface element may list the proximateusers 221 and the sporting venue. In another example, if therecommendation 169 is generated in response to an emergency signal 225,the user interface element may indicate to the user the emergencycondition that is associated with the emergency signal 225.

When the user enables location sharing using the user interface element,the user may enable location sharing with all of their friends orcontacts in one or more social networking applications, or just asubset. For example, the user may choose to enable location sharing withsubsets of their friends or contacts such as “college friends” and notenable location sharing with subsets such as “work friends.”

Where the trigger condition 145 that resulted in the recommendation 169is associated with environmental signals 191 such as one or moreproximate users 221, beacon signals 223, or emergency signals 225, theuser may select to only enable location sharing with the user or useraccounts associated with the environmental signals 191. For example, ifthe trigger condition 145 was that the user is near a threshold numberof proximate users 221, then the user may choose to enable locationsharing only with respect to those proximate users 221. In anotherexample, if the trigger condition 145 was a beacon signal 223 that isassociated with a ski resort, then the user may choose to enablelocation sharing only with respect to the account in the socialnetworking application associated with the ski resort.

In some implementation, rather than generate a recommendation 169, undercertain circumstances, the trigger engine 210 may enable locationsharing automatically on the client device 110, and without user action.For example, when the environmental signals 191 include emergencysignals 225, the trigger engine 210 may automatically enable thelocation sharing. The particular circumstances or trigger conditions 145under which the trigger engine 210 may automatically enable locationsharing may be specified by the user or set by an administrator, forexample.

The trigger engine 210 may also disable location sharing after it hasbeen enabled on the client device 110. In some implementations, thetrigger engine 210 may disable location sharing when some or all of thetrigger conditions 145 that caused the recommendation 169 to begenerated are no longer present. For example, the trigger engine 210 maydisable the location sharing when the proximate users 221 have changed,the current location 117 associated with the user has changed, or theemergency signal 225 is no longer being received or transmitted.

Alternatively or additionally, the trigger engine 210 may disablelocation sharing after some amount of time has passed since it wasenabled (e.g., after one hour, two hours, three hours, etc. havepassed). The amount of time may be set by a user or an administrator. Inanother implementation, the trigger engine 210 may periodically remindthe user the that location sharing has been enabled, and may ask theuser to confirm that they want location sharing to remain enabled.

FIG. 3 is an illustration of an example user interface 300 forrecommending that a user enable location sharing on a client device 110.The user interface 300 may be implemented by the client device 110associated with the user. As shown, the user interface 300 is displayedon a tablet computing device. However, the user interface 300 may bedisplayed by other computing devices such as smartphones and vehiclenavigation systems.

As shown in a window 320, a user is viewing a map using an application112. The application 112 may be a map application 112, and may besimilar to the map application 112 included in many smartphones. Thecurrent location 117 of the user on the map is shown in the window 320by an icon 307. The location 117 of the user may be determined using aGPS or other location determination component associated with the clientdevice 110.

To determine whether to enable location sharing, the client device 110and/or the sharing engine 165 has collected data about the client device110, including environmental signals 191 and other data, and has usedthe collected data to determine if any trigger conditions 145 associatedwith the client device 110 are satisfied.

Continuing to FIG. 4, the sharing engine 165 has determined that thereare some proximate users 221 that are near the location 117 of the user.In addition, the presence of the proximate users 221 has satisfied atrigger condition 145 associated with the client device 110. Based onthe satisfied trigger condition 145, the sharing engine 165 has theprovided a recommendation 169 that the client device 110 enable locationsharing. In response to the recommendation 169, the client device 110has generated, rendered, and displayed a user interface element 415 inthe window 320.

In the example shown, the user interface element 415 includes the text“Some of your friends are nearby. Do you want to enable locationsharing?” that explains to the user that one or more proximate users 221were detected and encourages the user to enable location sharing. Whilethe user interface element 415 shown does not specifically identify theproximate users 221, in other implementations the proximate users 221may be identified.

The user interface element 415 comprises three buttons that the user canselect from. The first button labeled “Enable sharing” enables locationsharing on the client device 110 with all users that have a socialnetworking relationship with the user associated with the client device110. The second button labeled “Enable sharing with nearby friends only”enables location sharing with the proximate users 221 only. The thirdbutton labeled “Do not enable sharing” leaves location sharing disabledon the client device 110.

Continuing to FIG. 5, the user has selected the button labeled “Enablesharing with nearby friends only.” Accordingly, the locations 117associated with the proximate users 221 have been rendered and displayedon the map as the icons labeled “Peter” and “John.” The location 117 ofthe user corresponding to the icon 307 has also been shared by thesharing engine 165 with the client devices 110 associated with theproximate users 221.

In addition, a user interface element 510 has been displayed in thewindow 320 that includes the text “Location sharing is enabled!” toremind the user that the location sharing has been enabled on the clientdevice 110. The user interface element 510 also includes a buttonlabeled “Disable location sharing” that the user can select toimmediately disable location sharing on the client device 110.

FIG. 6 is an operational flow of an implementation of a method 600 forenabling and disabling location sharing on a client device 110 based onenvironmental signals. The method 600 may be implemented by the sharingengine 165 and/or the client device 110, for example.

At 601, a current location of a device associated with a user isdetermined. The device may be the client device 110, and the currentlocation 117 of the device may be determined using a locationdetermination component of the device (e.g., a GPS).

At 603, a plurality of environmental signals is determined. Theplurality of environmental signals 191 may be determined by the signalengine 205. The plurality of environmental signals 191 may includeindications of one or more other users that are within a thresholddistance of the current location 117 (i.e., the proximate users 221).The indications of the proximate users 221 may be received from one ormore social networking providers 170 and may be users that have a socialnetworking relationship with the user associated with the device. Otherenvironmental signals 191 may include one or more beacon signals 223 andone or more emergency signals 225.

At 605, one or more trigger conditions are retrieved. The one or moretrigger conditions 145 may be retrieved by the trigger engine 210. Theone or more trigger conditions 145 may be specific to the userassociated with the device, or may be associated with all of the usersof the sharing engine 165. Each trigger condition 145 may be a rule thattakes as an input some or all of the plurality of environmental signals191 and/or the current location 117, and returns an indication ofwhether or not location sharing should be enabled. Other data may beused by the trigger conditions 145 such as user data 167 and locationdata 166, for example.

At 607, it is determined that the one or more trigger conditions havebeen satisfied. The determination may be made by the trigger engine 210using the plurality of environmental signals 191 and/or the currentlocation 117 of the device. A trigger condition 145 is satisfied when itreturns an indication that location sharing should be enabled on thedevice associated with the user based on the environmental signals 191and/or the current location 117.

At 609, a recommendation to enable location sharing is provided to thedevice associated with the user. The recommendation 169 may be for thedevice to ask the user if they would like to enable location sharing.Depending on the implementation, the recommendation 169 may includeindications of one or more of the environmental signals 191 thatsatisfied the one or more trigger conditions 145 that led to thegeneration of the recommendation 169. For example, the recommendation169 may indicate the proximate users 221.

At 611, it is determined that the user has enabled location sharing onthe device associated with the user. That the user has enabled locationsharing may be determined by the trigger engine 210 based on informationreceived from the device associated with the user.

At 613, it is determined that the one or more trigger conditions are nolonger satisfied. That the one or more trigger conditions 145 are nolonger satisfied may be determined by the trigger engine 210. In someimplementations, the trigger engine 210 may determine that some or allof the environmental signals 191 that originally satisfied the one ormore trigger conditions 145 have changed. For example, some or all ofthe proximate users 221 may no longer be present.

At 615, location sharing on the device associated with the user isdisabled. The location sharing may be disabled by the trigger engine 210in response to the determination that the one or more trigger conditions145 are no longer satisfied. In some implementations, the locationsharing may be disabled automatically and without the user of the devicehaving to take any action such as responding to a prompt or activating auser interface element.

FIG. 7 is an operational flow of an implementation of a method 700 forenabling and disabling location sharing on a client device 110 based onproximate users. The method 700 may be implemented by the sharing engine165 and/or the client device 110, for example.

At 701, a current location of a device associated with a user isdetermined. The device may be the client device 110 and the currentlocation 117 of the device may be determined using a locationdetermination component of the device (e.g., a GPS).

At 703, one or more other users that are within a threshold distance ofthe current location are determined. The one or more other users thatare within a threshold distance of the current location 117 may bedetermined by the signal engine 205 from information received from oneor more social networking providers 170. The one or more other users maybe the proximate users 221.

Depending on the implementation, the signal engine 205 may provide thecurrent location 117 and an identifier of the user associated with thedevice to the social networking provider 170, and the social networkingprovider 170 may return indicators of other users that are within thethreshold distance of the user associated with the device. The indicatedother users may have a social networking relationship with the userassociated with the device.

At 705, it is determined that one or more trigger conditions have beensatisfied. The determination may be made by the trigger engine 210 usingthe determined one or more other users that are proximate to the user(i.e., proximate users 221) and/or the current location 117 of thedevice. A trigger condition 145 is satisfied when it returns anindication that location sharing should be enabled on the deviceassociated with the user based on the environmental signals 191 and/orthe current location 117.

At 707, location sharing is enabled on the device associated with theuser. The location sharing may be enabled by the trigger engine 210 inresponse to the determination that one or more trigger conditions havebeen satisfied. Depending on the implementation, the location sharingmay be enabled after the user agrees to enable location sharing, orwithout any action being taken by the user. After enabling the locationsharing, some indication or notification that the location sharing hasbeen enabled may be displayed to the user on their device.

At 709, it is determined that the one or more trigger conditions are nolonger satisfied. That the one or more trigger conditions 145 are nolonger satisfied may be determined by the trigger engine 210. In someimplementations, the trigger engine 210 may determine that some or allof the users that were determined to be within the threshold distance ofthe device are no longer within the threshold distance.

At 711, location sharing on the device associated with the user isdisabled. The location sharing may be disabled by the trigger engine 210in response to the determination that the one or more trigger conditions145 are no longer satisfied. In some implementations, the locationsharing may be disabled automatically and without the user of the devicehaving to take any action such as responding to a prompt or activating auser interface element.

FIG. 8 shows an exemplary computing environment in which exampleembodiments and aspects may be implemented. The computing deviceenvironment is only one example of a suitable computing environment andis not intended to suggest any limitation as to the scope of use orfunctionality.

Numerous other general purpose or special purpose computing devicesenvironments or configurations may be used. Examples of well-knowncomputing devices, environments, and/or configurations that may besuitable for use include, but are not limited to, personal computers,server computers, handheld or laptop devices, multiprocessor systems,microprocessor-based systems, network personal computers (PCs),minicomputers, mainframe computers, embedded systems, distributedcomputing environments that include any of the above systems or devices,and the like.

Computer-executable instructions, such as program modules, beingexecuted by a computer may be used. Generally, program modules includeroutines, programs, objects, components, data structures, etc. thatperform particular tasks or implement particular abstract data types.Distributed computing environments may be used where tasks are performedby remote processing devices that are linked through a communicationsnetwork or other data transmission medium. In a distributed computingenvironment, program modules and other data may be located in both localand remote computer storage media including memory storage devices.

With reference to FIG. 8, an exemplary system for implementing aspectsdescribed herein includes a computing device, such as computing device800. In its most basic configuration, computing device 800 typicallyincludes at least one processing unit 802 and memory 804. Depending onthe exact configuration and type of computing device, memory 804 may bevolatile (such as random access memory (RAM)), non-volatile (such asread-only memory (ROM), flash memory, etc.), or some combination of thetwo. This most basic configuration is illustrated in FIG. 8 by dashedline 806.

Computing device 800 may have additional features/functionality. Forexample, computing device 800 may include additional storage (removableand/or non-removable) including, but not limited to, magnetic or opticaldisks or tape. Such additional storage is illustrated in FIG. 8 byremovable storage 808 and non-removable storage 810.

Computing device 800 typically includes a variety of computer readablemedia. Computer readable media can be any available media that can beaccessed by the device 800 and includes both volatile and non-volatilemedia, removable and non-removable media.

Computer storage media include volatile and non-volatile, and removableand non-removable media implemented in any method or technology forstorage of information such as computer readable instructions, datastructures, program modules or other data. Memory 804, removable storage808, and non-removable storage 810 are all examples of computer storagemedia. Computer storage media include, but are not limited to, RAM, ROM,electrically erasable program read-only memory (EEPROM), flash memory orother memory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed bycomputing device 800. Any such computer storage media may be part ofcomputing device 800.

Computing device 800 may contain communication connection(s) 812 thatallow the device to communicate with other devices. Computing device 800may also have input device(s) 814 such as a keyboard, mouse, pen, voiceinput device, touch input device, etc. Output device(s) 816 such as adisplay, speakers, printer, etc. may also be included. All these devicesare well known in the art and need not be discussed at length here.

It should be understood that the various techniques described herein maybe implemented in connection with hardware components or softwarecomponents or, where appropriate, with a combination of both.Illustrative types of hardware components that can be used includeField-programmable Gate Arrays (FPGAs), Application-specific IntegratedCircuits (ASICs), Application-specific Standard Products (ASSPs),System-on-a-chip systems (SOCs), Complex Programmable Logic Devices(CPLDs), etc. The methods and apparatus of the presently disclosedsubject matter, or certain aspects or portions thereof, may take theform of program code (i.e., instructions) embodied in tangible media,such as floppy diskettes, CD-ROMs, hard drives, or any othermachine-readable storage medium where, when the program code is loadedinto and executed by a machine, such as a computer, the machine becomesan apparatus for practicing the presently disclosed subject matter.

In an implementation, a system recommending that location sharing beenabled for a user in response to determining that one or more triggerconditions are satisfied, and for disabling location sharing in responseto determining that the one or more trigger conditions are no longersatisfied is provided. The system includes at least one computing deviceand a sharing engine. The sharing engine: determines a current locationof a device associated with a user; determines a plurality ofenvironmental signals; retrieves one or more trigger conditions; basedon the determined current location of the device associated with theuser and the determined plurality of environmental signals, determinesthat the one or more trigger conditions are satisfied; in response tothe determination that the one or more trigger conditions are satisfied,provides a recommendation to enable location sharing on the deviceassociated with the user; determines that the user has enabled locationsharing on the device associated with the user; determines that the oneor more trigger conditions are no longer satisfied; and in response tothe determination that the one or more trigger conditions are no longersatisfied, disables location sharing on the device associated with theuser.

Implementations may include some or all of the following features. Theplurality of environmental signals may include indications of one ormore other users that are within a threshold distance of the currentlocation. The one or more other users may have a social networkingrelationship with the user. The recommendation to enable locationsharing may include a recommendation to enable location sharing with theone or more other users. The plurality of environmental signals mayinclude a signal from a beacon. The recommendation to enable locationsharing may include a recommendation to enable location sharing with anaccount associated with the beacon. The plurality of environmentalsignals may include an emergency signal. The recommendation to enablelocation sharing may include a recommendation to enable location sharingwith an account associated with the emergency signal. The sharing enginethat determines that the one or more trigger conditions have beensatisfied may include the sharing engine that determines that thecurrent location of the device matches one or more flagged locations.The sharing engine that disables location sharing on the deviceassociated with the user may include the sharing engine thatautomatically disables location sharing on the device and without actionby the user.

In an implementation, a system for enabling location sharing for a userin response to determining that one or more trigger conditions aresatisfied, and for disabling location sharing in response to determiningthat the one or more trigger conditions are no longer satisfied isprovided. The system may include at least one computing device and asharing engine. The sharing engine: determines a current location of adevice associated with a user; determines one more other users that arewithin a threshold distance of the current location; based on thedetermined current location of the device associated with the user andthe determined one or more other users, determines that one or moretrigger conditions are satisfied; and in response to the determinationthat the one or more trigger conditions are satisfied, enables locationsharing on the device associated with the user.

Implementations may include some or all of the following features. Thesharing engine further determines that the one or more triggerconditions are no longer satisfied; and in response to the determinationthat the one or more trigger conditions are no longer satisfied,disables location sharing on the device associated with the user. Thesharing engine that determines that the one or more trigger conditionsare no longer satisfied may include the sharing engine that determinesthat the current location of the device associated with the user haschanged, or the sharing engine that determines an amount of time hasexpired. The one or more other users may have a social networkingrelationship with the user associated with the device. The sharingengine further enables location sharing with the determined one or moreother users.

In an implementation, a method for enabling location sharing for a userin response to determining that one or more trigger conditions aresatisfied, and for disabling location sharing in response to determiningthat the one or more trigger conditions are no longer satisfied isprovided. The method includes: determining a plurality of environmentalsignals associated with a user by a computing device; based on thedetermined plurality of environmental signals, determining that one ormore trigger conditions are satisfied by the computing device; inresponse to the determination that the one or more trigger conditionsare satisfied, providing a recommendation for the user to enablelocation sharing by the computing device; determining that the user hasenabled location sharing by the computing device; determining that theone or more trigger conditions are no longer satisfied by the computingdevice; and in response to the determination that the one or moretrigger conditions are no longer satisfied, disabling location sharingby the computing device.

Implementations may include some or all of the following features. Theplurality of environmental signals may include indications of one ormore other users that are within a threshold distance of the currentlocation. The plurality of environmental signals may include a signalfrom a beacon. The plurality of environmental signals may include anemergency signal. Disabling location sharing may include disablinglocation sharing automatically and without action by the user.

Although exemplary implementations may refer to utilizing aspects of thepresently disclosed subject matter in the context of one or morestand-alone computer systems, the subject matter is not so limited, butrather may be implemented in connection with any computing environment,such as a network or distributed computing environment. Still further,aspects of the presently disclosed subject matter may be implemented inor across a plurality of processing chips or devices, and storage maysimilarly be effected across a plurality of devices. Such devices mightinclude personal computers, network servers, and handheld devices, forexample.

Although the subject matter has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the subject matter defined in the appended claims is notnecessarily limited to the specific features or acts described above.Rather, the specific features and acts described above are disclosed asexample forms of implementing the claims.

1. A system comprising: a computing device; and a sharing engine that:determines a current location of a device associated with a user;determines a plurality of environmental signals; retrieves one or moretrigger conditions configured without input from the user; based on thedetermined current location of the device associated with the user andthe determined plurality of environmental signals, determines that theone or more trigger conditions are satisfied automatically and withoutinput from the user; determines that location sharing is disabled on thedevice; in response to the determination that the one or more triggerconditions are satisfied and that location sharing is disabled on thedevice, presents a prompt on a display of the device, the promptsoliciting input from the user to temporarily enable location sharing toshare a location of the device associated with the user; determines thatthe user has enabled location sharing on the device associated with theuser; determines that the one or more trigger conditions are no longersatisfied; and in response to the determination that the one or moretrigger conditions are no longer satisfied, disables location sharing onthe device associated with the user.
 2. The system of claim 1, whereinthe plurality of environmental signals comprises comprise indications ofone or more other users that are within a threshold distance of thecurrent location.
 3. The system of claim 2, wherein the one or moreother users have a social networking relationship with the user.
 4. Thesystem of claim 2, wherein the recommendation to enable location sharingcomprises a recommendation to enable location sharing with the one ormore other users.
 5. The system of claim 1, wherein the plurality ofenvironmental signals comprises a signal from a beacon.
 6. The system ofclaim 5, wherein the recommendation to enable location sharing comprisesa recommendation to enable location sharing with an account associatedwith the beacon.
 7. The system of claim 1, wherein the plurality ofenvironmental signals comprises an emergency signal.
 8. The system ofclaim 7, wherein the recommendation to enable location sharing comprisesa recommendation to enable location sharing with an account associatedwith the emergency signal.
 9. The system of claim 1, wherein the sharingengine determines that the one or more trigger conditions have beensatisfied by determining that the current location of the device matchesone or more flagged locations.
 10. The system of claim 1, wherein thesharing engine disables location sharing on the device associated withthe user by automatically disabling location sharing on the devicewithout action by the user.
 11. A system comprising: a sharing enginestored in memory that: determines a current location of a computingdevice associated with a user; determines one more other devices thatare within a threshold distance of the current location; based on thedetermined current location of the computing device associated with theuser and the determined one or more other users, determines that one ormore trigger conditions are satisfied automatically and without inputfrom the user, the trigger conditions being configured for the computingdevice without input from the user; determines that location sharing isdisabled on the computing device; and in response to the determinationthat the one or more trigger conditions are satisfied and that locationsharing is disabled on the device, presenting a prompt on a display ofthe computing device, the prompt soliciting user input to temporarilyenable location sharing to share a location of the computing deviceassociated with the user.
 12. The system of claim 11, wherein thesharing engine further: determines that the one or more triggerconditions are no longer satisfied; and in response to the determinationthat the one or more trigger conditions are no longer satisfied,disables location sharing on the device associated with the user. 13.The system of claim 12, wherein the sharing engine determines that theone or more trigger conditions are no longer satisfied by determiningthat the current location of the device associated with the user haschanged or by determining that an amount of time has expired.
 14. Thesystem of claim 11, wherein the one or more other users have a socialnetworking relationship with the user associated with the device. 15.The system of claim 11, wherein the sharing engine further enableslocation sharing with the determined one or more other users.
 16. Amethod comprising: determining a plurality of environmental signalsassociated with a user by a computing device; based on the determinedplurality of environmental signals, determining that one or more triggerconditions are satisfied by the computing device, the trigger conditionsbeing configured for the computing device without input from the user;determining that location sharing is disabled on the computing device;in response to the determination that the one or more trigger conditionsare satisfied and that location sharing is disabled on the computingdevice presenting a prompt on a display of the computing device, theprompt soliciting input from the user to temporarily enable locationsharing to share a location of the computing device; determining thatthe user has enabled location sharing by the computing device;determining that the one or more trigger conditions are no longersatisfied by the computing device; and in response to the determinationthat the one or more trigger conditions are no longer satisfied,disabling location sharing by the computing device.
 17. The method ofclaim 16, wherein the plurality of environmental signals comprisesindications of one or more other users that are within a thresholddistance of the current location.
 18. The method of claim 16, whereinthe plurality of environmental signals comprises a signal from a beacon.19. The method of claim 16, wherein the plurality of environmentalsignals comprises an emergency signal.
 20. The method of claim 16,wherein disabling location sharing comprises disabling location sharingautomatically and without action by the user.